<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ProdutoBO
 *
 * @author Dellano
 */


require_once 'dao/ProdutoDAO.php';

require_once 'Application_Filter_CleanHTML.php';

class ProdutoBO {
    //put your code here
    

    public function init ()
    {}

    private static $instancia;

    public static function getInstance ()
    {

        if (!isset (self::$instancia))
        {

            $class = __CLASS__;

            self::$instancia = new $class;

        }

        return self::$instancia;
    }

    public function localizar ($idProduto)
    {
        try
        {   
            return ProdutoDAO::getInstance()->localizar ($idProduto);
        }
        catch (Exception $e)
        {
            echo $e->getMessage(); exit;
        }
    }
    
    public function listarCapas ()
    {
    	try
    		{
    			return ProdutoDAO::getInstance()->fetchAll ("eh_pagina_principal = 1")->toArray();
    		}
    	catch (Exception $e) 
    		{
    			die ($e->getMessage());
    		}
    }

    public function listar ($busca = null, array $limites = null)
    {
        try
        {
           if (isset ($busca))
           {

                 
                    $filtros = new Zend_Filter();
                    $filtros->addFilter(new Zend_Filter_Alnum(true))
                               ->addFilter( new Application_Filter_CleanHTML())
                            ;

                    //filtra a entrada
                    $busca = $filtros->filter($busca);

                   $sql = "upper(nome) LIKE '%".strtoupper($busca)."%'";
            }


        //   echo "<b>".$sq."</b>"; exit;

          return ProdutoDAO::getInstance ()->fetchAll ($sql)->toArray ();
         

        }
        catch (Exception $e)
        {
            echo $e->getMessage(); exit;
        }

        return false;
    }

    public function deletar ($idProduto)
    {
        try
        { 
            return ProdutoDAO::getInstance()->delete ( "id = ".(int) $idProduto );
         }
        catch (Exception $e)
        {
            echo $e->getMessage(); exit;
        }

    }

     public function promover ($idProduto)
    {
        try
        {
            $produto = $this->localizar($idProduto);
            echo "Antes "; print_r ($produto['eh_pagina_principal']);
            $produto['eh_pagina_principal'] =  ($produto['eh_pagina_principal'] == '0') ?  1: 0;
            echo "<br/>Depois "; print_r ($produto['eh_pagina_principal']);
            
            return $this->atualizar($produto, null, false);
        }
        catch (Exception $e)
        {
            echo $e->getMessage(); exit;
        }

    }

    public function adicionar (array $dados,  $caminho_imagem)
    {			//print_r($dados); exit;

                if (isset ($dados) & !empty ($dados))
                {
                    try
                    {
                        //add o caminho da imagem ao adicionar
                        $dados['caminho_imagem']        = $caminho_imagem;
                       //traduz o valor do checkbox eh_paginrincipal para bit
                        $dados['eh_pagina_principal']   = ($dados['eh_pagina_principal'] == "on") ?  1 : 0  ;

                        ProdutoDAO::getInstance()->insert ($dados);

                        return true;
                    }
                    catch (Exception $e)
                    {
                        echo $e->getMessage(); exit;
                    }
                }

                return false;
    }

    public function atualizar ( array $dados, $caminho_imagem = null, $promocao = null)
    {
        if (isset ($dados) & !empty ($dados))
        {
            try
            {   //print_r($dados); exit;
                 //add o caminho da imagem ao adicionar
                 if (isset ($caminho_imagem))
                    $dados['caminho_imagem']     = $caminho_imagem;
                 //traduz o valor do checkbox eh_paginrincipal para bit
                 if (!isset($promocao))
                 	$dados['eh_pagina_principal']= ($dados['eh_pagina_principal'] == "on") ?  1 : 0  ;

                ProdutoDAO::getInstance()->update ($dados, "id =". (int) $dados['id']);
                
                return true;
            }
            catch (Exception $e)
            {
                echo $e->getMessage(); exit;
            }
        }

        return false;
    }

    public function tratarUpload()
    {

        try {

                    $upload = new Zend_File_Transfer_Adapter_Http ();

                    $upload->setDestination("../public/images/up/");

            //        $upload->addValidator('Size', false, 3000)
            //                     ->addValidator('Count',false,10);
            //
            //        if (!$upload->isValid())
            //        {
            //             throw new Exception("Upload valido!");
            //
            //            return false;
            //        }

                    $files = $upload->getFileInfo();

                    foreach ($files as $file => $info)
                    {

                        if (!$this->eh_extensaoPermitida( substr($info['name'], -3)))
                        {

                                throw new Exception("Tipo nao permitido de arquivo!");

                                return false;

                        }

                       if($upload->isValid($file))

                           $upload->receive($file);

                       else

                           return false;
                    }

        }
        catch(Exception $e)
        {
                    die($e->getMessage());
        }


        return true;
        
    }

    private function eh_extensaoPermitida ($extencao)
    { // substr($inf, -3) != "jpg"
   
        return  (   $extencao == "jpg"     ||
                        $extencao == "peg"  ||
                        $extencao == "png"  ||
                        $extencao == "gif"  ||
                        $extencao == "bmp" ) ;

    }


}


?>
